//引用expres 框架
const express = require('express');
//引入 path 模块,处理路径
const path = require("path");
//引用路由模块
const home =require('./router/home');
const admin = require('./router/admin');
//引入body-parser
const bodyPaser = require('body-parser');
//导入express-session模块
const session = require('express-session');
//引入dateformat 第三方模块  返回一个方法
const dateFormat = require('dateformat')
//导入art-template 模板引擎
const template = require("art-template")


//数据库连接
require('./model/connect')
require('./model/user')
//创建网站服务器
const app = express();
//获取当前当前文件下的 public  目录
// const pathhome= path.join(__dirname,'public')  //__dirname 当前文件下的绝对目录

//处理post 请求
app.use(bodyPaser.urlencoded({extended:false}));

//告诉express 框架模板所在的位置
app.set('views',path.join(__dirname,'views'));
//告诉express 框架的默认后缀
app.set('view engine','html')
//修改模板文件的后缀位 .html
//少了下面这句就会提示 can't find module html
app.engine('html', require('express-art-template'));

//向模板内部导入dateFormate变量
template.defaults.imports.dateFormat =dateFormat;


//开放静态资源文件
app.use(express.static(path.join(__dirname,'public')))

//配置session
app.use(session({
    resave: false, //添加 resave 选项
    saveUninitialized: false, //添加 saveUninitialized 选项
    secret:'secret key',
    }));

//拦截请求 判断用户登录状态
app.use('/admin',require('./middleware/loginGuard'))

//为路由对象匹配请求路径  挂载路由容器
app.use('/home',home)
app.use('/admin',admin)

// //错误跳转中间件
app.use((err,req,res,next)=>{
    //将字符串对象转换为对象类型
    //JSON.parse()
    const result = JSON.parse(err);
    let params =[];
    for(let attr in result){
        if(attr != 'path'){
            params.push(attr +'='+ result[attr]);
        }
    }
    res.redirect(`${result.path}?${params.join('&')}`);
})




//监听端口
app.listen(3000,function(){
    console.log("服务器启动,请访问localhost:3000/home,超级管理员：183@qq.com passwork:123456")
})


